// 分类相关类型定义 - 与后端Category模型保持一致

// 分类实体 - 与后端Category模型完全对应
export interface Category {
  id: number                    // 后端: Long id，JSON序列化为number
  name: string                  // 分类名称
  slug: string                  // 可读唯一标识
  parentId?: number             // 后端: Long parentId，JSON序列化为number (数据库字段: parent_id)
  level: number                 // 层级
  path: string                  // 分类路径
  sortOrder: number             // 排序 (数据库字段: sort_order)
  status: number                // 状态 1=启用，0=禁用
  isLeaf: number                // 是否叶子节点 1=是 0=否 (数据库字段: is_leaf)
  createdAt: string             // 后端: LocalDateTime，JSON序列化为ISO字符串 (数据库字段: created_at)
  updatedAt: string             // 后端: LocalDateTime，JSON序列化为ISO字符串 (数据库字段: updated_at)
  deletedAt?: string            // 后端: LocalDateTime，JSON序列化为ISO字符串 (数据库字段: deleted_at)
}

// 分类树结构DTO（包含children嵌套） - 与后端CategoryTreeDTO完全对应
export interface CategoryTreeDTO {
  id: number                    // 后端: Long，JSON序列化为number
  name: string                  // 分类名称
  slug: string                  // 可读唯一标识
  parentId?: number             // 后端: Long，JSON序列化为number (父分类ID，顶级为null)
  level: number                 // 层级：1=顶级 2=二级 3=三级...
  path: string                  // 分类路径：如 /1/3/9
  sortOrder: number             // 排序（越小越靠前）
  status: number                // 状态：1=启用 0=禁用
  isLeaf: number                // 是否叶子：1=是 0=否
  createdAt: string             // 后端: LocalDateTime，JSON序列化为ISO字符串
  updatedAt: string             // 后端: LocalDateTime，JSON序列化为ISO字符串
  children?: CategoryTreeDTO[]  // 子分类列表
}

// 分类查询参数
export interface CategoryQueryParams {
  keyword?: string
  parentId?: number
  level?: number
  status?: number
  page: number
  size: number
}

// 分类分页响应
export interface CategoryPageResponse {
  total: number
  list: Category[]
} 